package com.suning.sawp.member.service;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

import com.suning.sawp.dto.storeman.Category;
import com.suning.sawp.member.vo.MemExpandDataOfCateResponse;
import com.suning.sawp.member.vo.MemExpandDataOfCateVo;
import com.suning.sawp.member.vo.MemExpandDataOfEmployeeResponse;
import com.suning.sawp.member.vo.MemExpandDataOfEmployeeVo;
import com.suning.sawp.member.vo.MemExpandDataOfPlaceResponse;
import com.suning.sawp.member.vo.MemExpandDataOfPlaceVo;
import com.suning.sawp.member.vo.MemExpandDataOfStoreResponse;
import com.suning.sawp.member.vo.MemExpandDataOfStoreVo;

/**
 * 门店拓展转换数据服务接口 <br>
 * 〈功能详细描述〉
 *
 * @author 15050519
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface MemExpandConversionService {

    /**
     * 查询总部，大区，分公司销售转换数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MemExpandDataOfStoreResponse queryExpandDataOfStore(Long activityId, Integer source, Integer mode);

    /**
     * 查询门店品类销售转换数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param storeCode
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MemExpandDataOfCateResponse queryExpandDataOfStoreCate(Long activityId, String storeCode, Integer source,
            Integer mode);

    /**
     * 查询门店品类下员工销售转换数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param storeCode
     * @param cateCode
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MemExpandDataOfEmployeeResponse queryExpandDataOfEmployee(Long activityId, String storeCode, String cateCode,
            Integer source, Integer mode);

    /**
     * 查询拓展地点销售转化数据 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param startDate
     * @param endDate
     * @param placeName
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    MemExpandDataOfPlaceResponse queryExpandDataOfPlace(String storeCode, Date startDate, Date endDate,
            String placeName);

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MemExpandDataOfStoreVo> downExpandDataOfStore(Long activityId, Integer source, Integer mode);

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MemExpandDataOfCateVo> downExpandDataOfStoreCate(Long activityId, String storeCode, Integer source, Integer mode);

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param cateCode
     * @param source
     * @param mode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MemExpandDataOfEmployeeVo> downExpandDataOfEmployee(Long activityId, String storeCode, String cateCode, Integer source, Integer mode);

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param startDate
     * @param endDate
     * @param placeName
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<MemExpandDataOfPlaceVo> downExpandDataOfPlace(String storeCode, String startDate, String endDate, String placeName);
    
    /**
     * 处理sale增加表数据到具体的销售转换表
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param endDate
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void processExpandConversionData(String endDate) throws ParseException;
    
    /**
     * 查询门店活动拓展品类
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param activityId
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<Category> queryActivityStoreCategorys(Long activityId, String storeCode);
}
